<HTML>
<HEAD>
<TITLE>tkcon: observe procedure</TITLE>
<LINK REL="STYLESHEET" TYPE="text/css" HREF="./style.css">
</HEAD>

<BODY BGCOLOR=#FFFFFF>

<TABLE WIDTH=100% BORDER=0 CELLSPACING=2 CELLPADDING=0 BGCOLOR=#000000><TR><TD>
<!-- start header info -->
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=#FFFFFF>
<TR>
<TH><FONT SIZE=+3>tkcon: <CODE>observe</CODE> procedure</FONT></TH>
<TD align=right>
<A href="http://tkcon.sourceforge.net/"> 
<IMG src="http://sourceforge.net/sflogo.php?group_id=11462&type=1" width="88"
height="31" border="0" alt="SourceForge Logo"></A>
</TD>
</TR>
</TABLE>
<!-- end header info -->

</TD></TR><TR><TD>
<!-- start main navigation table -->
<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=2 BGCOLOR=#CCCCCC width=100%>
<TR>
<TH CLASS="hi"><A HREF="index.html" CLASS="hi">Documentation</A></TH>
<TH><A HREF="purpose.html">Purpose &amp; Features</A></TH>
<TH><A HREF="limits.html">Limitations</A></TH>
<TH><A HREF="todo.html">To&nbsp;Do</A></TH>
<TH><A HREF="license.terms">License</A></TH>
</TR><TR>
<TH COLSPAN=2><A HREF="plugin.html">Online Demo</A>
(requires <A HREF="http://tcl.activestate.com/software/plugin/">Tk plugin</A>)</TH>
<TH COLSPAN=3><A HREF="nontcl.html">Using TkCon with other Tk Languages</A></TH>
</TR>
</TABLE>
<!-- end main navigation table -->
</TD></TR><TR><TD>
<!-- start secondary navigation table -->
<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=2 BGCOLOR=#BBBBBB width=100%>
<TR>
<TH><A HREF="start.html">Getting Started</A></TH>
<TH><A HREF="bindings.html">Special Bindings</A></TH>
<TH><A HREF="procs.html">Procedures</A></TH>
<TH><A HREF="demopic.gif">Screenshot</A></TH>
</TR>
<TR>
<TH><A HREF="dump.html"><CODE>dump</CODE></A></TH>
<TH><A HREF="tkcon.html"><CODE>tkcon</CODE></A></TH>
<TH><A HREF="idebug.html"><CODE>idebug</CODE></A></TH>
<TH CLASS="hi2"><A HREF="observe.html" CLASS="hi2"><CODE>observe</CODE></A></TH>
</TR>
</TABLE>
<!-- end secondary navigation table -->
</TD></TR><TR><TD BGCOLOR=#FFFFFF>
<DIV CLASS="indent">
 <P>
This command provides runtime debugging output for variables and commands
without the need to edit your code.  For variables, the underlying mechanism
uses <code>trace</code> and <code>dump var</code>.  For commands, it renames
the observed procedure and uses a special wrapper procedure.  <b><font
color="#FF0000">WARNING:</font></b> using this procedure after checkpointing
state will result in major problems if you clean state because the renamed
(true) commands will be lost.
 <P>

This procedure is experimental.  Comments are encouraged.

<DL>

<DT> <CODE>observe <b>command</b></CODE> <I>cmdname ?maxlevel?</I>
<DD> This will create a wrapper command which prints out (using
<code>dump</code>) the call stack to the console.  <i>maxlevel</i>
represents the maximum number of levels of the call stack which will be
printed (defaults to 4).

<DT> <CODE>observe <b>cdelete</b></CODE> <I>cmdname</I>
<DD> Removes the wrapper around an observed command.

<DT> <CODE>observe <b>cinfo</b></CODE> <I>cmdname</I>
<DD> Prints out useless info.

<DT> <CODE>observe <b>variable</b></CODE> <I>varname operation ?args?</I>
<DD> Currently a wrapper around trace that uses <code>dump</code> to
print out the value of the named variable whenever the specified operation
on that variable occurs (must be read, write or unset).

<DT> <CODE>observe <b>vdelete</b></CODE> <I>varname operation</I>
<DD> Deletes the trace wrapper around the named variable.

<DT> <CODE>observe <b>vinfo</b></CODE> <I>varname</I>
<DD> Prints out trace info about the named variable.

</DL>
</DIV>
</TD></TR></TABLE>

<HR NOSHADE SIZE=1>
<ADDRESS><FONT SIZE=2>&copy;
<A HREF="mailto:jeff.hobbs@acm.org">Jeffrey Hobbs</A></FONT></ADDRESS>

</BODY>
</HTML>
